#include <iostream>
#include <list>
#include "Card.h"
using namespace std;

class Rules {
        //Functions
        public:

                //These are public b/c they need to be modified by Logic
                Card prevCard;

                //List of Previously Played Cards
                list<Card> playedHearts;
                list<Card> playedSpades;
                list<Card> playedClubs;
                list<Card> playedDiamonds;


                virtual bool isLegal(Card card) = 0;
                virtual bool isStartCard(Card card) = 0;
                bool isAdjacent(Card card);
                Suit getPrevSuit();
                Rank getPrevRank();
};

class normRules : public Rules {
        
        //Functions
        bool isSeven(Card card);
        
        public:

                bool isLegal(Card card);
                bool isStartCard(Card card);
};

class altRules : public Rules {
        //Functions
        bool isNum(Card card);
        
        public:

                bool isLegal(Card card);
                bool isStartCard(Card card);
};

